package org.rslai.util.process;

import java.io.IOException;

public interface Process {

	/**
	 * 运行一个外部程序
	 * @param command 要执行的可执行文件的完整路径及参数(文件格式为 EXE,BAT,COM 或 PIF)
	 * @param workingDirectory 工作目录.不一定非得是程序所在的目录. 传入 null 为缺省目录
	 * @return true：成功<br/>
	 * 否则产生异常
	 * @throws IOException
	 */
	public boolean run(String command, String workingDirectory) throws IOException;

	/**
	 * 运行一个外部程序
	 * @param command 要执行的可执行文件的完整路径及参数(文件格式为 EXE,BAT,COM 或 PIF)
	 * @return true：成功<br/>
	 * 否则产生异常
	 * @throws IOException
	 */
	public boolean run(String command) throws IOException;

	/**
	 * 运行一个外部程序并等待执行结束
	 * @param command 要执行的可执行文件的完整路径及参数(文件格式为 EXE,BAT,COM 或 PIF)
	 * @param workingDirectory 工作目录.不一定非得是程序所在的目录. 传入 null 为缺省目录
	 * @return 外部程序运行后返回的信息
	 * @throws IOException
	 */
	public String runWait(String command, String workingDirectory) throws IOException;

	/**
	 * 运行一个外部程序并等待执行结束
	 * @param command 要执行的可执行文件的完整路径及参数(文件格式为 EXE,BAT,COM 或 PIF)
	 * @return 外部程序运行后返回的信息
	 * @throws IOException
	 */
	public String runWait(String command) throws IOException;

	/**
	 * 检查指定进程是否存在
	 * @param processName 要检查的进程的名称或 PID(进程标识符)
	 * @return 成功: 返回进程的 PID <br/>
	 * 失败: 返回0,进程不存在.
	 * @throws IOException
	 */
	public int processExists(String processName) throws IOException; 

	/**
	 * 终止某个进程
	 * @param process 要终止的进程的名称或 PID(进程标识符)
	 * @return true: 成功<br>
	 * false: 失败
	 * @throws IOException
	 */
	public boolean processClose(String process) throws IOException;

}
